Complex Multiplier/Mixer Megafunction Solution Brief 4 Target Applications: Communications Digital Signal Processing Family: FLEX 10K and FLEX 8000 Vendor: Nova Engineering, Inc. 5 Circle Freeway Drive Cincinnati, OH 45246 Tel. (513) 860-3456 Fax (513) 860-3535 E-mail sales@nova-eng.com WWW http://www.nova-eng.com November 1996, ver. 1 Features Parallel implementation for maximum speed Parameterized data width Optimized for the Altera(R) FLEX(R) 10K and FLEX 8000 device architectures Ideal for the following applications: - Digital mixers - Discrete Fourier transforms - Modulators/demodulators - Complex arithmetic - Wireless telecommunication systems General Description The complex multiplier/mixer megafunction from Nova Engineering can multiply two complex numbers or mix two complex signals. This function can be used for vector cross products, vector dot products, up/down frequency conversion, differential phase detection, digital amplitude modulation (AM), and quadrature amplitude modulation (QAM). Nova Engineering will customize the input width, output width, and processing latency of the complex multiplier/mixer megafunction at no additional cost. See Figure 1. Figure 1. Complex Multiplier/Mixer Megafunction Block Diagram a[n..0] Complex Multiplier/Mixer Megafunction c[n..0] + b[n..0] - real[m..0] d[n..0] a[n..0] d[n..0] + b[n..0] + imag[m..0] c[n..0] clk reset Functional Description The complex multiplier/mixer megafunction is a parallel and pipelined architecture that provides maximum speed. The function's internal and external operations are synchronized to the rising clock edge, and an asynchronous reset input is provided for initializing all internal registers. Altera Corporation A-SB-004-01 ALTERA MEGAFUNCTION MEGAFUNCTION PARTNERS ALTERA PARTNERS PROGRAM PROGRAM SB 4: Complex Multiplier/Mixer Megafunction The complex multiplier/mixer megafunction computes the following function: real[m..0] + jimag[m..0] = (a[n..0] + jb[n..0]) x (c[n..0] + jd[n..0]) where: real[m..0] = (a[n..0] x c[n..0]) - (b[n..0] x d[n..0]) imag[m..0] = (a[n..0] x d[n..0]) + (b[n..0] x c[n..0]) Because b[n..0] and d[n..0] are both imaginary (i.e., preceded by j = ( - 1 ) ), the real[m..0] output is equal to (a[n..0] x c[n..0]) - (b[n..0] x d[n..0]) . The imag[m..0] output is implicitly imaginary (i.e., preceded by j). Ports This function has input ports for two complex numbers or data streams. Table 1 describes the ports for the complex multiplier/mixer megafunction. Table 1. Complex Multiplier/Mixer Megafunction Ports Name Type Size Description a[n..0] Input 4 to 12 bits Real part of complex vector 1. Two's complement format. b[n..0] Input 4 to 12 bits Imaginary part of complex vector 1. Two's complement format. c[n..0] Input 4 to 12 bits Real part of complex vector 2. Two's complement format. d[n..0] Input 4 to 12 bits Imaginary part of complex vector 2. Two's complement format. clk Input - System clock. reset Input - Asynchronous reset, active high. real[m..0] Output 4 to 25 bits Real part of complex result. Two's complement format. imag[m..0] Output 4 to 25 bits Imaginary part of complex result. Two's complement format. Parameters Nova Engineering can customize the width of the input and output data parameters to eliminate unnecessary logic and precision, and to optimize speed and area. In addition, the multiplier latency parameter can be increased to improve execution speed or reduced to conserve logic cells. See Table 2. The total latency from input to output is equal to the specified multiplier latency plus one. The output of the adders is latched to increase the speed without increasing the logic used. Table 2. Complex Multiplier/Mixer Megafunction Parameters Parameter Typical Value Description Input data width 4 to 12 bits Specifies the width of inputs a[n..0], b[n..0], c[n..0], and d[n..0]. Output data width 4 to 25 bits Specifies the width of the output data. Truncation retains the most significant bits (MSBs) of the result and discards the least significant bits (LSBs). Multiplier latency 0 to 4 clocks Specifies the number of pipeline registers added to the design. Pipelining increases the operating speed at the expense of additional logic cells. Performance The megafunction does not require embedded array blocks (EABs), and thus performs efficiently in both FLEX 10K and FLEX 8000 device families. Because this function does not use EABs, it can be combined with a sine/cosine look-up table (LUT) for frequency down conversion or discrete Fourier transform (DFT) functions within a single device. 2 Altera Corporation SB 4: Complex Multiplier/Mixer Megafunction Typically, the complex multiplier/mixer megafunction is used as a coprocessor to a digital signal processing (DSP) function. The efficiency of the DSP processor design can be improved by implementing both the megafunction and a FIFO function into the same device. For example, the input/output process loading on the DSP processor can be reduced if the megafunction's inputs and outputs are accessed as blocks of data through a FIFO function. Table 3 shows the device utilization and maximum clock frequency for a typical implementation of the complex multiplier/mixer megafunction. Table 3. Typical Device Utilization Implementation Clock (Max) Logic Cells EABs Input data width = 8 bits Multiplier output width = 16 bits Output data width = 8 bits Multiplier latency = 3 clocks 50 MHz 600 0 Contact Nova Engineering for more information on the complex multiplier/mixer megafunction. Applications The complex multiplier/mixer megafunction is useful for a variety of applications, including vector arithmetic, digital AM and QAM, and frequency down conversion. Vector Arithmetic The complex multiplier/mixer megafunction can calculate vector cross products and vector dot products. For example, to calculate the vector cross product of vectors R = rx + ry and S = sx + sy, each variable is assigned to an input of the megafunction (i.e., a[n..0] = rx, c[n..0] = sy, b[n..0] = rx, and d[n..0] = sy). The megafunction performs the calculation and provides the result on the real[m..0] output. A vector dot product can be calculated in a similar manner. To calculate the vector dot product of vectors R = rx + ry and S = sx + sy, each variable is assigned to an input of the megafunction (i.e., a[n..0] = rx, c[n..0] = sy, b[n..0] = ry, and d[n..0] = sx). The complex multiplier/mixer megafunction performs the calculation and provides the result on the imag[m..0] output. Digital AM & QAM Amplitude modulation (AM) and quadrature amplitude modulation (QAM) require the source data to vary the amplitude of a carrier frequency over time. For example, to create an AM wave with the complex multiplier/mixer megafunction, assign the carrier frequency to the c[n..0] input and the information signal to the a[n..0] input. Set the b[n..0] and d[n..0] inputs to zero. The megafunction produces an AM wave on the real[m..0] output. Altera Corporation 3 SB 4: Complex Multiplier/Mixer Megafunction Frequency Down Conversion Communications systems often transmit and receive data at frequencies significantly faster than the data rate of the information. The megafunction can recover this information or convert it to a lower frequency by mixing a modulated signal with a carrier frequency. For example, to mix a modulated signal with a carrier frequency generated from a numerically controlled oscillator (NCO), apply the NCO outputs to the c[n..0] and d[n..0] inputs of the megafunction. Apply the received signal to the a[n..0] input. For example, if y(t) = s(t) x cos(wt) is the received signal, then mixing with the carrier frequency cos(wt) produces: z(t) = s(t) x cos(wt) x cos(wt) Where: s(t) = Information signal Using the trigonometric identity cos(a) x cos(b) = (1/2) x cos(a - b) + (1/2) x cos(a + b) and substituting cos(a) = cos(b) = cos(wt) produces the following: z(t) = s(t) x (1/2) x [cos(a - b) + cos(a + b)] Low-pass filtering can be accomplished via a low-pass, finite impulse response (FIR) filter, effectively discarding the cos(a + b) element because it is twice the carrier frequency. Because a = b, the following equation results: z(t) = (1/2) x s(t) The carrier frequency is removed to show the information signal. (R) 2610 Orchard Parkway San Jose, CA 95134-2020 (408) 894-7000 http://www.altera.com 4 Copyright 1996 Altera Corporation. Altera, AMPP, FLEX, FLEX 10K, and FLEX 8000 are trademarks and/or service marks of Altera Corporation in the United States and other countries. Other brands or products are trademarks of their respective holders. The specifications contained herein are subject to change without notice. Altera assumes no responsibility or liability arising out of the application or use of any information, product, or service described herein except as expressly agreed to in writing by Altera Corporation. Altera customers are advised to obtain the latest version of device specifications before relying on any published information and before placing orders for products or services. All rights reserved. Altera Corporation